package cn.iocoder.an.module.business.service.equipmentmanage;

import java.util.*;

import jakarta.validation.*;
import cn.iocoder.an.module.business.controller.admin.equipmentmanage.vo.*;
import cn.iocoder.an.module.business.dal.dataobject.equipmentmanage.EquipmentManageDO;
import cn.iocoder.an.framework.common.pojo.PageResult;

/**
 * 设备台账 Service 接口
 *
 * @author zzy
 */
public interface EquipmentManageService {

    /**
     * 创建设备台账
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    Long createEquipmentManage(@Valid EquipmentManageSaveReqVO createReqVO);

    /**
     * 更新设备台账
     *
     * @param updateReqVO 更新信息
     */
    void updateEquipmentManage(@Valid EquipmentManageSaveReqVO updateReqVO);

    /**
     * 更新设备台账 DO
     *
     * @param updateReqVO 更新信息
     */
    void updateEquipmentManageByDo(@Valid EquipmentManageDO updateReqVO);


    /**
     * 删除设备台账
     *
     * @param id 编号
     */
    void deleteEquipmentManage(Long id);

    /**
    * 批量删除设备台账
    *
    * @param ids 编号
    */
    void deleteEquipmentManageListByIds(List<Long> ids);

    /**
     * 获得设备台账
     *
     * @param id 编号
     * @return 设备台账
     */
    EquipmentManageDO getEquipmentManage(Long id);

    /**
     * 获得设备台账分页
     *
     * @param pageReqVO 分页查询
     * @return 设备台账分页
     */
    PageResult<EquipmentManageDO> getEquipmentManagePage(EquipmentManagePageReqVO pageReqVO);


    PageResult<EquipmentManageDO> getEquipmentManageCheckPage(EquipmentManagePageReqVO pageReqVO);

    /**
     * 获得所有设备
     *
     * @return 获得所有设备
     */
    List<EquipmentManageDO> getEquipmentManageList(String keyWords);


    /**
     * 批量导入设备台账
     *
     * @param importEquipment     导入设备台账
     * @param isUpdateSupport 是否支持更新
     * @return 导入结果
     */
    ImportRespVO importEquipmentList(List<EquipmentImportExcelVO> importEquipment, boolean isUpdateSupport);


    Long   getEquipmentIdByCode(String codeString);

}